Poniższe przykłady mają na celu przedstawienie podstawowych metod do rysowania wykresów funkcji f:R→R. Więcej informacji można znaleźć na stronie https://doc.sagemath.org/html/en/reference/plotting/sage/plot/plot.html
Ogólne wprowadzenie do programu SageMath dostępne jest na stronie https://mosullivan.sdsu.edu/sagetutorial/index.html
f(x)=ln(x)^3-3*ln(x)
f.plot((0,14), ymax=8, ymin=-3) # (0,14) oznaczają zakres osi OX; ymax, ymin oznaczają maksymalną i minimalną wartość na osi OY, podobnie można ustalić xmin i xmax
# SHIFT ENTER kompiluje program
f(x)=x^2*e^(-x) # e = liczba e
f.plot((-1.5,10), color='green')
# Tu zakresem osi OX jest przedział (-1.5,10). Zauważmy, że separatorem dziesiętnym jest kropka a nie przecinek
f(x)=(2*x^2-5*x+2)/(3*x^2-10*x+3)
w = plot(f, (-10,10))
show(w, ymin=-5, ymax=5)
Zauważmy, że powyżej asymptoty są narysowane tym samym kolorem co wykres funkcji f i trudno je odróżnić. Aby to poprawić można użyć komendy detect_poles='show'
.
f(x)=(2*x^2-5*x+2)/(3*x^2-10*x+3)
w = plot(f, (-10,10), detect_poles='show') # detect_poles='show' wykrywa zera mianownika i rysuje pionowe asymptoty
show(w, ymin=-5, ymax=5)
Niestety detect_poles
nie będzie działać np. dla tangensa. Ale można wskazać punkty, które mają być wykluczone z dziedziny za pomocą funkcji exclude
.
f(x)=e^(tan(x)) # tan = tangens, cot = cotangens
plot(f, (x,-8,8), exclude=[-5*pi/2, -3*pi/2, -pi/2, pi/2, 3*pi/2, 5*pi/2], ymax=2) # pi = liczba pi
Można też samemu zaznaczyć brakujące asymptoty, poprzez połączenie kilku wykresów w jeden.
f(x) = e^(tan(x))
w = plot(f, (x,-8,8), exclude=[-5*pi/2, -3*pi/2, -pi/2, pi/2, 3*pi/2, 5*pi/2])
w += line([[-3*pi/2, 0], [-3*pi/2, 3]], color='gray', linestyle='dashed') # dodajemy do wykresu w prostą o początku w punkcie [-3*pi/2, 0] i końcu w [-3*pi/2, 3]
w += line([[-pi/2, 0], [-pi/2, 3]], color='gray', linestyle='dashed') # linestyle='dashed' oznacza, że prosta będzie przerywana
w += line([[pi/2, 0], [pi/2, 3]], color='gray', linestyle='dashed')
w += line([[3*pi/2, 0], [3*pi/2, 3]], color='gray', linestyle='dashed')
w += line([[5*pi/2, 0], [5*pi/2, 3]], color='gray', linestyle='dashed')
w.show(ymax=2)
Przy rysowaniu wykresów funkcji, w których pojawiają się funkcje trygonometryczne, może być korzystne by numerować oś OX wielokrotnościami liczby π, a oś OY pozostawić bez zmian. Taki efekt uzyska się poprzez dodanie komendy tick_formatter=(pi, None)
.
f(x)=(sin(x))^2+cos(x)
w = plot(f, (-10, 10))+text(r"$f(x)=\mathrm{sin}^2(x)+\mathrm{cos}(x)$", (10, 1.5), fontsize=12, color='blue')
show(w, tick_formatter=(pi, None), aspect_ratio=1.0, figsize=10)
# aspect_ratio=1.0 gwarantuje, że skala użyta na obu osiach jest taka sama
# figsize=10 powiększa wykres do rozmiaru 10 (oryginalnie jest rysowany w rozmiarze 4)
Do powyższego wykresu dodaliśmy też wzór funkcji, który go opisuje. Sam wzór funkcji pisany jest za pomocą składni programu LaTeX; ale trzeba jeszcze podać współrzędne punktu, w którym ma on zostać umieszczony (powyżej wybraliśmy punkt (10,1.5)). Dodatkowo można ustalić m.in. kolor dodawanego tekstu lub wielkość czcionki.
Następny przykład pokazuje inny sposób dodania legendy. Przy okazji pokazujemy różnicę pomiędzy zapisem wzoru funkcji w dolarach i bez nich.
w = plot(abs(x), (x,-1,5), legend_label='|x|') # abs(x) = wartość bezwzględna z x
w += plot(-(x-2)^2+2, (x,-1,5), color='green', legend_label='$-(x-2)^2+2$')
show(w)
Aby narysować wykres funkcji, która jest zdefiniowana za pomocą różnych wzorów na podzbiorach dziedziny, można podzielić ją na kilka funkcji i narysować je razem na jednym obrazku (jak to zostało zrobione w poprzednim przykładzie lub w przypadku wykresu funkcji etg(x) wraz z jej asymptotami), ale można też użyć komendę piecewise()
. Dla funkcji
f(x)={2xsin(1/x),x∈(0,1)0,x=02xsin(1/x),x∈(−1,0)
jest to zrobione poniżej.
f = piecewise([((0,1), 2*x*sin(1/x)), ([0,0], 0), ((-1,0), 2*x*sin(1/x))])
f.plot()
Czasami już z wykresu funkcji możemy odczytać limf(x) przy x dążącym do pewnego punktu a z lewej lub z prawej strony. Aby się upewnić czy nasze przypuszczenia są słuszne lub aby poznać granicę bez rysowania wykresu, stosujemy funkcję limit()
z ewnetualnym zaznaczeniem czy interesuje nas granica lewo- czy prawostronna: dir='minus'
lub dir='plus'
.
g(x)=x/ln(x)
w = plot(g, (0,10), detect_poles='show')+text(r"$g(x)=\frac{x}{\ln x}$", (8.5, 2), fontsize=12, color='blue')
show(w, ymax=6, ymin=-5, xmin=0, aspect_ratio=1.0)
show(limit(g(x), x=0, dir='plus'))
show(limit(g(x), x=1, dir='minus'))
# Dzięki użyciu show() możemy wyświetlić kilka rezultatów naraz. Bez tego jedynie efekt ostatniej komendy zostałby wyświetlony.
Aby policzyć pochodną z funkcji f (jednej lub wielu zmiennych) względem zmiennej x, należy użyć komendy diff(f(x),x)
, na przykład:
f(x)=(sin(x))^2+cos(x)
diff(f(x),x)
f(x,y)=(sin(x))^2+cos(x)*y
diff(f(x,y),x)
Można też, oczywiście, z łatwością obliczyć wartość funkcji w danym punkcie:
f(x)=(sin(x))^2+cos(x)
g(x)=diff(f(x),x)
show(f(pi/3))
show(g(pi/3))